#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <errno.h>
#include <string.h>
int main()
{

  execl("/usr/bin/ls", "ls", "-a", "-l", NULL);
  printf("hahaha\n");
  printf("hahaha\n");
  printf("hahaha\n");
  printf("hahaha\n");
  printf("hahaha\n");
  printf("hahaha\n");
  printf("hahaha\n");
  printf("hahaha\n");
  printf("hahaha\n");
  printf("hahaha\n");
  printf("hahaha\n");

































//  if(fork() == 0)
//  {
//    int n = 5;
//
//    while(n--)
//    {
//      printf("i'm child[%d]\n", getpid());
//      sleep(1);
//    }
//    exit(6);
//  }
//  else 
//  {
//    
//      pid_t ret = 0;
//    do 
//    {
//      printf("wait\n");
//      ret = waitpid(-1, NULL, WNOHANG);
//      sleep(1);
//       if(ret > 0)
//       {
//         printf("wait succeed\n");
//        }
//    }while(ret == 0);
//  }
//
//
//
//






































//  int status = 0;
//  pid_t ret = waitpid(-1, NULL, 0);
//
//  if(ret > 0)
//  {
//    printf("wait success\n");
//  }
//  else 
//  {
//    printf("wait failed, %s\n", strerror(errno));
//  }


  return 0;










//usr  pid_t id = fork();
//  int n = 100;
//  if(id == 0)
//  {
//    while(n--){
//    printf("child[%d]:i'm child\n", getpid());
//    sleep(1);
//    }
//    exit(14);
//  }
//  else 
//  {
//    printf("i'm parent, i will wait\n");
//    int status = 0;
//
//    pid_t ret = waitpid(id, &status, 0);
//    printf("waited done, child is %d\n", ret);
//    if(ret > 0){
//     if(WIFEXITED(status))
//     {
//        printf("exit code: %d\n", WEXITSTATUS(status));
//     }
//     else 
//     {
//        printf("exit failed, signal: %d\n", status & 0x7f);
//     }
//   }
//    else if(ret == 0)
//    {
//      printf("no process need to wait\n");
//    }
//    else 
//    {
//      printf("wait failed\n");
//    }
//  }
//  return 0;
}
